#pragma once

#include "nef_export.h"
#include "resolve_type.h"
#include "nef_base.h"



BOOST_PP_REPEAT(MAX_EXPORTS, PP_DECLARE_RESOLVE, export)

namespace nef {

template<typename T, typename ExportType>
void resolve_export(Catalog &cat, const T &val)
{
	nef_export_resolver<ExportType>::Resolve(cat, val);
}

template<typename ExportType>
void resolve_export(Catalog &cat)
{
	nef_export_resolver<ExportType>::Resolve(cat);
}

template<typename T>
void resolve_exports(Catalog &cat, T &val)
{
	BOOST_PP_REPEAT(MAX_EXPORTS, PP_RESOLVE, export)
	BOOST_PP_REPEAT(MAX_EXPORTS, PP_RESOLVE_T, export)

	BOOST_PP_REPEAT(MAX_BASES, PP_RESOLVE_BASE_T, export)
}

}